import streamlit as st
from openai import OpenAI

# 初始化 OpenAI 客户端
client = OpenAI(
    api_key="sk-1afb89de00204c2fb77caad11d48a5cd",
    base_url="https://api.deepseek.com/v1"
)

# 语言列表（仅保留常用语言）
LANGUAGES = {
    "自动检测": "auto",
    "中文": "zh",
    "英语": "en",
    "日语": "ja",
    "韩语": "ko",
    "法语": "fr",
    "西班牙语": "es",
    "德语": "de"
}

# 页面配置
st.set_page_config(
    page_title="DeepSeek 翻译助手",
    layout="wide"
)

# 页面标题
st.title("DeepSeek 翻译助手")
st.markdown("简洁高效的多语言翻译工具")

# 语言选择区域
#用于创建并排的列，实现更灵活的页面排版
col1, col2 = st.columns(2)
with col1:
    source_lang = st.selectbox("源语言", list(LANGUAGES.keys()), index=0)
with col2:
    target_lang = st.selectbox("目标语言", list(LANGUAGES.keys()), index=1)

# 输入文本区域
input_text = st.text_area("请输入需要翻译的文本", height=200)

# 翻译按钮
if st.button("开始翻译", use_container_width=True):
    if not input_text.strip():
        #用于移除字符串首尾的空白字符
        st.warning("请输入需要翻译的内容")
    elif source_lang == target_lang and source_lang != "自动检测":
        st.warning("源语言和目标语言不能相同")
    else:
        with st.spinner("翻译中..."):
            try:
                # 构建翻译提示
                prompt = f"""
                将以下文本从{LANGUAGES[source_lang]}翻译为{LANGUAGES[target_lang]}：
                {input_text}
                仅返回翻译结果，不要包含其他解释。
                """
                # soure_lang = "en"  # 这里假设 soure_lang 是一个变量，存储了语言代码
                # language_name = LANGUAGES[soure_lang]  # 通过键获取对应的值
                # print(language_name)  # 输出: English

                # 调用 API
                response = client.chat.completions.create(
                    model="deepseek-chat",
                    messages=[{"role": "user", "content": prompt}]
                )

                # 显示翻译结果
                st.subheader("翻译结果")
                translation = response.choices[0].message.content.strip()

                st.code(translation, language="text")
                # st.code() 是 Streamlit 中用于在应用界面上展示格式化代码块的函数

            except Exception as e:
                st.error(f"翻译失败: {str(e)}")


